import {createApp} from 'vue'
import App from '@/App.vue'
import 'virtual:svg-icons-register' // 引入svg-icons-register
import globalComponent from "@/components/globalComponent"; // 引入自定义全局组件
import ElementPlus from 'element-plus'
import 'element-plus/theme-chalk/index.css'
import '@/assets/styles/index.scss' // 引入全局样式
import 'element-plus/theme-chalk/dark/css-vars.css' // 引入 Element Plus 暗黑模式样式
import router from '@/router'
import {createPinia} from "pinia";
import {useLoginStore} from '@/store/usersLoginStore.ts'

async function bootstrap() {
    const app = createApp(App)
    const pinia = createPinia()
    app.use(pinia)
    app.use(ElementPlus)
    app.use(globalComponent) // 注册自定义全局组件

    // 刷新后防止白屏，再次添加动态路由  这个一定要在路由注册之前
    const loginStore = useLoginStore()
    if (localStorage.getItem("token") && loginStore.userName === "") {
        // 如果本地有token，但是用户名是空的，说明用户信息没有获取到，需要重新获取用户信息
        try {
            await loginStore.getUserInfoFun()
        } catch (e) {
            // 如果有错误，就删除本地token，并跳转到登录页面
            localStorage.removeItem("token")
            await router.replace('/login')
        }
    }

    app.use(router)
    app.mount('#app')
}

await bootstrap()